# 1）一年365天，每天进步1%，一年累计进步多少呢？
# 如果每天退步1%，一年累计退步多少？
import math


def lvup(power):
    """"
    输入原本的能力值，返回一年进步后的结果
    """
    for i in range(366):
        power *= 1.01
    return power


user = lvup(1)
print(user)


def lvdown(power):
    """"
    输入原本的能力值，返回一年退步后的结果
    """
    for i in range(1, 366):
        power *= 0.99
    return power


user = lvdown(1)
print(user)


# **********
def up1(factor=1.01, days=365):
    """
    计算进步/退步
    :param factor:进步/退步量
    :param days:时间
    :return:
    """
    return math.pow(factor, days + 1)


print(f'一年累计进步：{round(up1(), 2)}')


# 2）一年365天，一个周5天工作，每天进步1%
# 一年365天，一个周2天休息，每天退步1%
# 这种工作日的力量如何呢？

def lvu5d2(power):
    for i in range(366):
        if i % 7 in [0, 6]:
            power *= 0.99
        else:
            power *= 1.01
    return power


user2 = lvu5d2(1)
print(f'累计：{user2}')


# ***********

def up2(up_factor=0.01, down_factor=0.01, days=366):
    result = 1
    for i in range(days):
        if i % 7 in [0, 6]:
            result *= (1 - down_factor)
        else:
            result *= (1 + up_factor)
    return result


print(f'累计一年:{round(up2(), 2)}')

# 3）工作日模式要努力到什么水平，才能与每天努力1%一样？
# A君：一年365天，每天进步1%，不停歇
# B君：一年365天，每周工作5天休息2天，休息日下降1%，要多努力呢？

user3 = round(up1(), 2)
print(f'A君一年进步量：{user3}')

up_factor = 0.01
while up2(up_factor) < up1():
    up_factor += 0.001
print(f'B君每天进步量:{round(up_factor,4)}')
